/**
 * GroupObj
 *
 */
if(typeof (module) !="undefined"){
    module.exports = FrameObj;

    var GroupObj = require('./GroupObj');
    var Serializer = require('./Serializer');
    var GraphObj = require('./GraphObj');
    var ImageObj = require('./ImageObj');
    var Parser = require('./Parser');
    var config = require('../../config').getConfig();
}





function FrameObj()
{
    GroupObj.call(this);    // 继承

    this.fi= null; //img ，  相框图片，ImageObj


    this.ct = Serializer.prototype.CLASS_TYPE_FRAMEOBJ;
}

FrameObj.prototype = new GroupObj(); // 继承

// 转成json字符串
FrameObj.prototype.toJson = function(){

    // 对于frame的子对象，在undo情需要还原子对象的数据
    // 注意，这是与group不同的地方
    var superJson = GroupObj.prototype.toJson.call(this);
    // 去掉父json字符串的头尾
    superJson = superJson.substr(1,superJson.length-2);
    var ret = '{';
    ret +=superJson;

    if(this.fi){
        ret +=',';
        ret +=('"fi":'+this.fi.toJson());
    }
    ret+='}';
    return ret;
}
// 从json对象中解析出PointPath
FrameObj.prototype.fromJson = function(jsonObj, versionId){
    GroupObj.prototype.fromJson.call(this, jsonObj,versionId);

    if(jsonObj.hasOwnProperty("fi") && jsonObj.fi !=null){
            var imageObj = new ImageObj();
            imageObj.fromJson(jsonObj.fi,versionId);
            this.fi = imageObj;
    }
}

/**
 * 将对象添加到PDF中
 * @param doc  PDFDocument结构
 * @param info  对象结构，属性如下：
 *                  docOriginX  文档的新原点 在原始原点的 坐标
 *                  docOriginY  文档的新原点 在原始原点的 坐标
 *                  clip        （在GraphObj对象中有效）true表示剪切蒙版，false表示普通对象
 */
FrameObj.prototype.addToPdf = function(doc, info){
    // 保存上下文环境
    Serializer.prototype.before.call(this, doc, info);

    doc.opacity(this.al);
    // 添加剪切蒙版
    doc.save();// 添加裁切前，先保存上下文
    var svgPath = this.mask.cp.toSvgPath();
    doc.path(svgPath).clip();

    // 描绘 组的对象
    for(var m=0;m<this.sub.length;m++){
        var obj = this.sub[m];
        obj.addToPdf(doc,info);
    }
    doc.restore();// 添加完成后，恢复上下文，这样下方的相框不会被clip掉。

    // 描绘相框
    if(this.fi){
        this.fi.addToPdf(doc, info);
    }

    // 还原上下文环境
    Serializer.prototype.after.call(this, doc,info);
}

/**
 * 取得图片对象,
 * 返回：数组
 */
FrameObj.prototype.getImageObjs = function(){
    var ret = new Array();
    if(this.fi)
        ret.push(this.fi);
    return ret;
}






